home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / lib / perl5 / Shell.pm < prev    next >
Text File  |  1995-07-02  |  769b  |  48 lines

  1. package Shell;
  2.  
  3. sub import {
  4.     my $self = shift;
  5.     my ($callpack, $callfile, $callline) = caller;
  6.     my @EXPORT;
  7.     if (@_) {
  8.     @EXPORT = @_;
  9.     }
  10.     else {
  11.     @EXPORT = 'AUTOLOAD';
  12.     }
  13.     foreach $sym (@EXPORT) {
  14.         *{"${callpack}::$sym"} = \&{"Shell::$sym"};
  15.     }
  16. };
  17.  
  18. AUTOLOAD {
  19.     my $cmd = $AUTOLOAD;
  20.     $cmd =~ s/^.*:://;
  21.     eval qq {
  22.     sub $AUTOLOAD {
  23.         if (\@_ < 2) {
  24.         `$cmd \@_`;
  25.         }
  26.         else {
  27.         open(SUBPROC, "-|")
  28.             or exec '$cmd', \@_
  29.             or die "Can't exec $cmd: \$!\n";
  30.         if (wantarray) {
  31.             my \@ret = <SUBPROC>;
  32.             close SUBPROC;    # XXX Oughta use a destructor.
  33.             \@ret;
  34.         }
  35.         else {
  36.             local(\$/) = undef;
  37.             my \$ret = <SUBPROC>;
  38.             close SUBPROC;
  39.             \$ret;
  40.         }
  41.         }
  42.     }
  43.     };
  44.     goto &$AUTOLOAD;
  45. }
  46.  
  47. 1;
  48.